From b4e7f85224152b12529433ba1bda045b759781b1 Mon Sep 17 00:00:00 2001 From: oliskoli Date: Wed, 16 Aug 2006 00:43:12 +0000 Subject: [PATCH] Force usage of common gbfile api. --- gpsbabel/inifile.c | 67 +++++++++++++++++++++++++--------------------- 1 file changed, 37 insertions(+), 30 deletions(-) diff --git a/gpsbabel/inifile.c b/gpsbabel/inifile.c index 5dd2b025f..08a669e04 100644 --- a/gpsbabel/inifile.c +++ b/gpsbabel/inifile.c @@ -50,10 +50,10 @@ typedef struct inifile_section_s #define GPSBABEL_INIFILE "gpsbabel.ini" -static FILE * -try_open_gpsbabel_inifile(const char *path) /* can be empty or NULL */ +static char * +find_gpsbabel_inifile(const char *path) /* can be empty or NULL */ { - FILE *result; + FILE *test; char *buff; int len; @@ -73,33 +73,40 @@ try_open_gpsbabel_inifile(const char *path) /* can be empty or NULL */ #endif } strcat(buff, GPSBABEL_INIFILE); - result = fopen(buff, "rb"); + test = fopen(buff, "rb"); + if (test) { + fclose(test); + return buff; + } xfree(buff); - - return result; + return NULL; } -static FILE * +static gbfile * open_gpsbabel_inifile(void) { - FILE *res; + char *name; char *envstr; + gbfile *res = NULL; envstr = getenv("GPSBABELINI"); if (envstr != NULL) { - res = fopen(envstr, "rb"); - if (res == NULL) { - warning("WARNING: GPSBabel-inifile, defined in environment, NOT found!\n"); - return NULL; + FILE *test; + + test = fopen(envstr, "r"); + if (test != NULL) { + fclose(test); + return gbfopen(envstr, "r", "GPSBabel"); } - return res; + warning("WARNING: GPSBabel-inifile, defined in environment, NOT found!\n"); + return NULL; } - res = try_open_gpsbabel_inifile(""); /* PWD */ - if (res == NULL) { + name = find_gpsbabel_inifile(""); /* PWD */ + if (name == NULL) { #ifdef __WIN32__ - res = try_open_gpsbabel_inifile(getenv("APPDATA")); - if (res == NULL) res = try_open_gpsbabel_inifile(getenv("WINDIR")); - if (res == NULL) res = try_open_gpsbabel_inifile(getenv("SYSTEMROOT")); + name = find_gpsbabel_inifile(getenv("APPDATA")); + if (name == NULL) name = find_gpsbabel_inifile(getenv("WINDIR")); + if (name == NULL) name = find_gpsbabel_inifile(getenv("SYSTEMROOT")); #else if ((envstr = getenv("HOME")) != NULL) { char *path; @@ -107,26 +114,27 @@ open_gpsbabel_inifile(void) path = xmalloc(strlen(envstr) + 11); strcpy(path, envstr); strcat(path, "/.gpsbabel"); - res = try_open_gpsbabel_inifile(path); + name = find_gpsbabel_inifile(path); xfree(path); } - if (res == NULL) res = try_open_gpsbabel_inifile("/usr/local/etc"); - if (res == NULL) res = try_open_gpsbabel_inifile("/etc"); + if (name == NULL) name = find_gpsbabel_inifile("/usr/local/etc"); + if (name == NULL) name = find_gpsbabel_inifile("/etc"); #endif } + if (name != NULL) { + res = gbfopen(name, "r", "GPSBabel"); + xfree(name); + } return res; } static void -inifile_load_file(FILE *fin, inifile_t *inifile, const char *myname) +inifile_load_file(gbfile *fin, inifile_t *inifile, const char *myname) { char *buf; inifile_section_t *sec = NULL; - textfile_t *tin; - - tin = textfile_init(fin); - while ((buf = textfile_read(tin))) + while ((buf = gbfgetstr(fin))) { char *cin = lrtrim(buf); @@ -183,7 +191,6 @@ inifile_load_file(FILE *fin, inifile_t *inifile, const char *myname) entry->val = xstrdup(""); } } - textfile_done(tin); } static char * @@ -228,19 +235,19 @@ inifile_t * inifile_init(const char *filename, const char *myname) { inifile_t *result; - FILE *fin = NULL; + gbfile *fin = NULL; if (filename == NULL) { fin = open_gpsbabel_inifile(); if (fin == NULL) return NULL; } - else fin = xfopen(filename, "rb", myname); + else fin = gbfopen(filename, "rb", myname); result = xcalloc(1, sizeof(*result)); QUEUE_INIT(&result->secs); inifile_load_file(fin, result, myname); - fclose(fin); + gbfclose(fin); return result; } -- 2.30.2